#pragma once

#include <cstdbool>
#include <cstdint>

namespace crc16 {

uint16_t CRC16_Calc(const uint8_t *buf, std::size_t len, uint16_t crc);
bool CRC16_Verify(const uint8_t *buf, std::size_t len);

}  // namespace crc16

namespace bcc {

static constexpr unsigned int FRAME_HEADER = 0X7B;  // 帧头
static constexpr unsigned int FRAME_TAIL = 0X7D;    // 帧尾

unsigned char BCC_Calc(const uint8_t *buf, std::size_t len);
bool BCC_Verify(const uint8_t *buf, std::size_t len, uint8_t check);

}  // namespace bcc
